#! /usr/bin/env python
# -*- coding: UTF-8 -*-
#Este programa se encarga de generar los sprites en pngs para el RO y de generar el archivo xml que linkea todos los archivos

import os

if __name__ == '__main__':
	pos = int( raw_input( "Ingrese el primer numero de secuencia: " ) )
	color = raw_input( "Ingrese el color de fondo de los bmp: " )

	acciones = [ "stand", "walk", "sit", "duck", "battle", "atk1", "onhit", "dying", "dead", "atk2", "atk3" ]
	direcciones = [ 'bot', 'leftbot', 'left', 'lefttop', 'top' ]
	straight_dirs = [ 'top', 'bot', 'left' ]
	straight_ani = [ 'stand', 'walk', 'sit' ]

	#transformamos los archivos a png con transparencia
	os.system( 'mogrify -format png -transparent "rgb(' + color + ')" *.bmp' )
	os.system( 'rm *.bmp' )

	#creamos un sprite por cada acción
	for accion in acciones:
		#dependiendo de la accion a representar, seguimos acciones diferentes
		if [ i for i in [ 'sit', 'stand', 'dead', 'dying'] if i in accion ]:
			frames = 1

		else:
			if "walk" in accion:
				frames = 8

			elif "battle" in accion:
				frames = 6

			else:
				frames = int( raw_input( "Ingrese la cantidad de frames de la acción " + accion + ": " ) )

		for direccion in direcciones:
			if direccion in straight_dirs and accion not in straight_ani:
				continue

			#cambiamos los nombres de los archivos para formar la secuencia
			for num in range( 0, frames ):
				os.rename( str( pos + num ) + '.png', accion + '_' + direccion + '.' + str( num ) + ".png" )

			#si es una acción con dirección left, hacemos su equivalente con right
			if 'left' in direccion:
				direccion = direccion.replace( 'left', 'right' )

			#aumentamos pos
			pos += frames

##################TODO: agregar el caso en que existan animaciones custom
#	#creamos el xml doc para ir agregando las acciones
#	actions_xml = minidom.Document()
#	actions = actions_xml.createElement( 'actions' )
#	
#	#creamos el nodo de la acción y le agregamos los atributos que correspondan
#	nodo_accion = actions_xml.createElement( 'action' )
#	nodo_accion.setAttribute( 'anchor', anchor )
#	nodo_accion.setAttribute( 'name', accion )
#	
#	#creamos el nodo dirección y modificamos sus atributos
#	nodo_direccion = actions_xml.createElement( 'direction' )
#	nodo_direccion.setAttribute( 'name', direccion )
#	
#	#creamos el nodo dirección y modificamos sus atributos
#	nodo_direccion = actions_xml.createElement( 'direction' )
#	nodo_direccion.setAttribute( 'name', direccion )
#
#	#agregamos el nodo al nodo accion
#	nodo_accion.appendChild( nodo_direccion )
#	#agregamos el nodo al actions
#	actions.appendChild( nodo_accion )
#
#	#apendamos el actions al doc
#	actions_xml.appendChild( actions )
#
#	#imprimimos el xml a un archivo
#	archivo = open( "actions.xml", 'w' )
#	archivo.write( actions_xml.toprettyxml( encoding="UTF-8" ) )
#	archivo.close()
#################################################################


